/* 递归函数-斐波那契数列
 *
 * @link: https://www.runoob.com/go/go-recursion.html
 */

// 包申明
package main

// 引入包
import (
	"fmt"
)

/*
递归，就是在运行的过程中调用自己
Go 语言支持递归。但我们在使用递归时，开发者需要设置退出条件，否则递归将陷入无限循环中。
递归函数对于解决数学上的问题是非常有用的，就像计算阶乘，生成斐波那契数列等。
*/

// 通过 Go 语言的递归函数实现斐波那契数列
// 入口函数
func main() {
	var i int
	for i = 0; i < 10; i++ {
		fmt.Println("%d\t", fibonacci(i))
	}
}

func fibonacci(n int) int {
	if n < 2 {
		return n
	}
	return fibonacci(n-2) + fibonacci(n-1)
}

/*
运行结果:
%d	 0
%d	 1
%d	 1
%d	 2
%d	 3
%d	 5
%d	 8
%d	 13
%d	 21
%d	 34
*/
